﻿using System.Collections.Generic;
using System.Linq;
using System.Web.Mvc;
using Unijovem.Domain;
using Unijovem.UI.Models;

namespace Unijovem.UI.Controllers
{
    public class DevocionalController : ControllerBase<DevocionalModel, Devocional>
    {
        public ActionResult Visualizar()
        {
            return Index();
        }

        public ActionResult DetalhesLeitura(int? id)
        {
            var devocional =
                new DevocionalModel().CriarViewModel(id == null
                                                         ? new Devocional().SelecionarDevocionalAtual()
                                                         : new Devocional().SelectById<Devocional>(id.Value)) 
                                                         ?? new DevocionalModel().CriarViewModel(new Devocional().SelectAllActive<Devocional>().FirstOrDefault());

            devocional.Comentarios = devocional.DevocionalComentarios.OrderByDescending(d => d.Comentario.Data).Select(d =>
                    new ComentarioModel
                        {
                            Data = d.Comentario.Data,
                            Descricao = d.Comentario.Descricao,
                            Id = d.Comentario.Id,
                            IdExterno = d.IdDevocional,
                            IdPessoa = d.Comentario.IdPessoa,
                            Pessoa = d.Comentario.Pessoa,
                            Tipo = d.Comentario.Tipo
                        }).ToList();
            WebSession(string.Concat(SessionName.Comentarios, devocional.Id), devocional.Comentarios);

            return View(devocional);
        }

        [HttpPost]
        [ValidateInput(false)]
        public override ActionResult Manter(DevocionalModel model)
        {
            if (UsuarioLogado)
                model.IdUsuario = IdUsuarioLogado;

            return base.Manter(model);
        }

        public void PreencherViewBags(int? idAutor = null)
        {
            ViewBag.Autores = new Autor().SelecionarPorTipo((int)AutorModel.TipoAutor.Preletor).
                ToSelectList(g => g.Nome, g => g.Id.ToString(), "Autor", idAutor.ToString());
        }
    }
}
